package com.ruge.test.数据结构和算法;

import org.junit.Test;

/**
 * 爱丽丝、如歌  创建于 2018/7/24 15:04
 * 说明:  TODO
 */
public class 算法1_冒泡排序 {
    @Test
    public void test1() {
        int[] arr = {9,8,7,6,5,4,3,2,1,11};
        System.out.print("排序前的数组");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        System.out.println();
        /**
         * 外循环
         * 循环的次数等于数组的长度-1
         * 3个数 比较2次就能排序
         * 4个数 比较3次就能排序
         * 5个数 比较4次就能排序
         * 6个数 比较5次就能排序
         * 7个数 比较6次就能排序
         * 8个数 比较7次就能排序
         */
        for (int i = 0; i < arr.length - 1; i++) {

            System.out.print("第"+i+"次排序的结果");
            for (int j = 0; j <arr.length ; j++) {
            System.out.print(+arr[j]+" ");
            }
            System.out.println();


            /**
             * 外循环次数越多  内循环次数就越少
             */
            for (int j = 0; j < arr.length - 1 - i; j++) {
                /**
                 * 当前位置的数和后面位置的数进行比较
                 * 如果当前位置比后面的数字大 就交换
                 */
                if (arr[j] > arr[j + 1]) {
                    int tmp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = tmp;
                }
            }
        }
        System.out.print("排序后的结果");
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
    }
}
